package com.codechuan.didi_web.utils;

import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class JSUtil {

    /**
     * @Deprecated 取出js函数 中的function后面函数名称
     * @param functionDefinition js函数
     * @return 返回函数名称
     */
    public static String extractFunctionName(String functionDefinition) {
        // 正则表达式匹配函数名
        Pattern pattern = Pattern.compile("function\\s+(\\w+)");
        Matcher matcher = pattern.matcher(functionDefinition);

        if (matcher.find()) {
            return matcher.group(1);
        }
        return null; // 如果没有匹配到，则返回null
    }

    /**
     * @Deprecated 计算js结果
     * @param func_def js函数
     * @param func 函数名称
     * @param args 函数参数
     * @return 返回计算结果
     */
    public static String executeJs(String func_def, String func, String args) {
        ScriptEngineManager manager = new ScriptEngineManager();
        ScriptEngine engine = manager.getEngineByName("nashorn");
        try {
            // 定义并执行 JavaScript 函数，传入参数
            Object result = engine.eval(func_def + " " +func + "(" + args + ")"+ ";");
            double number = Double.parseDouble(result.toString());
            long longValue = (long) number;
            return String.valueOf(longValue);
        } catch (ScriptException e) {
            System.out.println("e = " + e);
        }
        return null;
    }
}
